'use strict'
import * as ReplaceFlag from './enumeration'
/**
 * 校验一个变量是否可以被作为对象来使用
 * @param {any} variable
 * @returns
 */
const objResolver = (variable) => {
  if (variable && Object.keys(variable).length > 0) {
    return variable
  }
  return {}
}

/**
 * 尝试替换标题为预设定的标题
 *  @param {String} title 原本的标题
 *  @param {String} url 下一个路由
 */
const replaceTitleByUrl = (title, url) => {
  if (!title) {
    return undefined
  }
  // 非强制的配置内容要求完全匹配到路径才进行替换
  if (url in ReplaceFlag.replaceTitle) {
    return ReplaceFlag.replaceTitle[url]
  }
  // 强制替换的内容只要匹配到包含路径就进行替换
  const index = ReplaceFlag.forceReplaceTitleArr.indexOf(url)
  if (index !== -1) {
    return ReplaceFlag.forceReplaceTitle[index]
  }
  return title
}

/**
 * 确定哪些页面不进行记录
 * @param {String} url 页面链接
 * @return {Boolean} res 是否需要跳过
 */
const skipView = (url) => {
  // 排除集合
  const unnecessaryViewLink = [
    '/main/index',
    'login'
  ]
  // 查询当次的url是否模糊包含于排除集合当中
  const flag = unnecessaryViewLink.find(key => {
    if (url.indexOf(key) !== -1) {
      return key
    }
    return false
  })
  // 存在则进行跳过
  if (flag) {
    return true
  }
  return false
}

export {
  objResolver,
  replaceTitleByUrl,
  skipView
}
